home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1989 …il & Dave's Excellent CD / Excellent CD HFS.raw / Moof / Goodies / MPW Goodies / Interfaces / CIncludes / Slots.h < prev    next >
Encoding:
C/C++ Source or Header  |  1988-11-30  |  7.6 KB  |  204 lines  |  [TEXT/MPS ]

  1. /************************************************************
  2.  
  3. Created: Tuesday, October 4, 1988 at 9:22 PM
  4.     Slots.h
  5.     C Interface to the Macintosh Libraries
  6.  
  7.  
  8.     Copyright Apple Computer, Inc.  1986-1988
  9.     All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13.  
  14. #ifndef __SLOTS__
  15. #define __SLOTS__
  16.  
  17. #ifndef __TYPES__
  18. #include <Types.h>
  19. #endif
  20.  
  21. #ifndef __OSEVENTS__
  22. #include <OSEvents.h>
  23. #endif
  24.  
  25. #ifndef __OSUTILS__
  26. #include <OSUtils.h>
  27. #endif
  28.  
  29. #ifndef __FILES__
  30. #include <Files.h>
  31. #endif
  32.  
  33. #define fCardIsChanged 1            /*Card is Changed field in StatusFlags field of sInfoArray*/
  34. #define fCkForSame 0                /*For SearchSRT. Flag to check for SAME sResource in the table. */
  35. #define fCkForNext 1                /*For SearchSRT. Flag to check for NEXT sResource in the table. */
  36. #define fWarmStart 2                /*If this bit is set then warm start else cold start.*/
  37. #define stateNil 0                  /*State*/
  38. #define stateSDMInit 1              /*:Slot declaration manager Init*/
  39. #define statePRAMInit 2             /*:sPRAM record init*/
  40. #define statePInit 3                /*:Primary init*/
  41. #define stateSInit 4                /*:Secondary init*/
  42.  
  43. struct SlotIntQElement {
  44.     Ptr sqLink;                     /*ptr to next element*/
  45.     short sqType;                   /*queue type ID for validity*/
  46.     short sqPrio;                   /*priority*/
  47.     ProcPtr sqAddr;                 /*interrupt service routine*/
  48.     long sqParm;                    /*optional A1 parameter*/
  49. };
  50.  
  51. #ifndef __cplusplus
  52. typedef struct SlotIntQElement SlotIntQElement;
  53. #endif
  54.  
  55. typedef SlotIntQElement *SQElemPtr;
  56.  
  57. struct SpBlock {
  58.     long spResult;                  /*FUNCTION Result*/
  59.     Ptr spsPointer;                 /*structure pointer*/
  60.     long spSize;                    /*size of structure*/
  61.     long spOffsetData;              /*offset/data field used by sOffsetData*/
  62.     Ptr spIOFileName;               /*ptr to IOFile name for sDisDrvrName*/
  63.     Ptr spsExecPBlk;                /*pointer to sExec parameter block.*/
  64.     Ptr spStackPtr;                 /*old Stack pointer.*/
  65.     long spMisc;                    /*misc field for SDM.*/
  66.     long spReserved;                /*reserved for future expansion*/
  67.     short spIOReserved;             /*Reserved field of Slot Resource Table*/
  68.     short spRefNum;                 /*RefNum*/
  69.     short spCategory;               /*sType: Category*/
  70.     short spCType;                  /*Type*/
  71.     short spDrvrSW;                 /*DrvrSW*/
  72.     short spDrvrHW;                 /*DrvrHW*/
  73.     char spTBMask;                  /*type bit mask bits 0..3 mask words 0..3*/
  74.     char spSlot;                    /*slot number*/
  75.     char spID;                      /*structure ID*/
  76.     char spExtDev;                  /*ID of the external device*/
  77.     char spHwDev;                   /*Id of the hardware device.*/
  78.     char spByteLanes;               /*bytelanes from card ROM format block*/
  79.     char spFlags;                   /*standard flags*/
  80.     char spKey;                     /*Internal use only*/
  81. };
  82.  
  83. #ifndef __cplusplus
  84. typedef struct SpBlock SpBlock;
  85. #endif
  86.  
  87. typedef SpBlock *SpBlockPtr;
  88.  
  89. struct SInfoRecord {
  90.     Ptr siDirPtr;                   /*Pointer to directory*/
  91.     short siInitStatusA;            /*initialization E*/
  92.     short siInitStatusV;            /*status returned by vendor init code*/
  93.     char siState;                   /*initialization state*/
  94.     char siCPUByteLanes;            /*0=[d0..d7] 1=[d8..d15]*/
  95.     char siTopOfROM;                /*Top of ROM= $FssFFFFx: x is TopOfROM*/
  96.     char siStatusFlags;             /*bit 0 - card is changed*/
  97.     short siTOConst;                /*Time Out C for BusErr*/
  98.     char siReserved[2];             /*reserved*/
  99. };
  100.  
  101. #ifndef __cplusplus
  102. typedef struct SInfoRecord SInfoRecord;
  103. #endif
  104.  
  105. typedef SInfoRecord *SInfoRecPtr;
  106.  
  107. struct SDMRecord {
  108.     ProcPtr sdBEVSave;              /*Save old BusErr vector*/
  109.     ProcPtr sdBusErrProc;           /*Go here to determine if it is a BusErr*/
  110.     ProcPtr sdErrorEntry;           /*Go here if BusErrProc finds real BusErr*/
  111.     long sdReserved;                /*Reserved*/
  112. };
  113.  
  114. #ifndef __cplusplus
  115. typedef struct SDMRecord SDMRecord;
  116. #endif
  117.  
  118. struct FHeaderRec {
  119.     long fhDirOffset;               /*offset to directory*/
  120.     long fhLength;                  /*length of ROM*/
  121.     long fhCRC;                     /*CRC*/
  122.     char fhROMRev;                  /*revision of ROM*/
  123.     char fhFormat;                  /*format - 2*/
  124.     long fhTstPat;                  /*test pattern*/
  125.     char fhReserved;                /*reserved*/
  126.     char fhByteLanes;               /*ByteLanes*/
  127. };
  128.  
  129. #ifndef __cplusplus
  130. typedef struct FHeaderRec FHeaderRec;
  131. #endif
  132.  
  133. typedef FHeaderRec *FHeaderRecPtr;
  134.  
  135. struct SEBlock {
  136.     unsigned char seSlot;           /*Slot number.*/
  137.     unsigned char sesRsrcId;        /*sResource Id.*/
  138.     short seStatus;                 /*Status of code executed by sExec.*/
  139.     unsigned char seFlags;          /*Flags*/
  140.     unsigned char seFiller0;        /*Filler, must be SignedByte to align on odd boundry*/
  141.     unsigned char seFiller1;        /*Filler*/
  142.     unsigned char seFiller2;        /*Filler*/
  143.     long seResult;                  /*Result of sLoad.*/
  144.     long seIOFileName;              /*Pointer to IOFile name.*/
  145.     unsigned char seDevice;         /*Which device to read from.*/
  146.     unsigned char sePartition;      /*The partition.*/
  147.     unsigned char seOSType;         /*Type of OS.*/
  148.     unsigned char seReserved;       /*Reserved field.*/
  149.     unsigned char seRefNum;         /*RefNum of the driver.*/
  150.     unsigned char seNumDevices;     /* Number of devices to load.*/
  151.     unsigned char seBootState;      /*State of StartBoot code.*/
  152. };
  153.  
  154. #ifndef __cplusplus
  155. typedef struct SEBlock SEBlock;
  156. #endif
  157.  
  158. #ifdef __safe_link
  159. extern "C" {
  160. #endif
  161. pascal OSErr SIntInstall(SQElemPtr sIntQElemPtr,short theSlot); 
  162. pascal OSErr SIntRemove(SQElemPtr sIntQElemPtr,short theSlot); 
  163. pascal OSErr SReadByte(SpBlockPtr spBlkPtr); 
  164. pascal OSErr SReadWord(SpBlockPtr spBlkPtr); 
  165. pascal OSErr SReadLong(SpBlockPtr spBlkPtr); 
  166. pascal OSErr SGetCString(SpBlockPtr spBlkPtr); 
  167. pascal OSErr SGetBlock(SpBlockPtr spBlkPtr); 
  168. pascal OSErr SFindStruct(SpBlockPtr spBlkPtr); 
  169. pascal OSErr SReadStruct(SpBlockPtr spBlkPtr); 
  170. pascal OSErr SReadInfo(SpBlockPtr spBlkPtr); 
  171. pascal OSErr SReadPRAMRec(SpBlockPtr spBlkPtr); 
  172. pascal OSErr SPutPRAMRec(SpBlockPtr spBlkPtr); 
  173. pascal OSErr SReadFHeader(SpBlockPtr spBlkPtr); 
  174. pascal OSErr SNextSRsrc(SpBlockPtr spBlkPtr); 
  175. pascal OSErr SNextTypeSRsrc(SpBlockPtr spBlkPtr); 
  176. pascal OSErr SRsrcInfo(SpBlockPtr spBlkPtr); 
  177. pascal OSErr SCkCardStat(SpBlockPtr spBlkPtr); 
  178. pascal OSErr SReadDrvrName(SpBlockPtr spBlkPtr); 
  179. pascal OSErr SFindDevBase(SpBlockPtr spBlkPtr); 
  180. pascal OSErr SFindBigDevBase(SpBlockPtr spBlkPtr); 
  181. pascal OSErr InitSDeclMgr(SpBlockPtr spBlkPtr); 
  182. pascal OSErr SPrimaryInit(SpBlockPtr spBlkPtr); 
  183. pascal OSErr SCardChanged(SpBlockPtr spBlkPtr); 
  184. pascal OSErr SExec(SpBlockPtr spBlkPtr); 
  185. pascal OSErr SOffsetData(SpBlockPtr spBlkPtr); 
  186. pascal OSErr SInitPRAMRecs(SpBlockPtr spBlkPtr); 
  187. pascal OSErr SReadPBSize(SpBlockPtr spBlkPtr); 
  188. pascal OSErr SCalcStep(SpBlockPtr spBlkPtr); 
  189. pascal OSErr SInitSRsrcTable(SpBlockPtr spBlkPtr); 
  190. pascal OSErr SSearchSRT(SpBlockPtr spBlkPtr); 
  191. pascal OSErr SUpdateSRT(SpBlockPtr spBlkPtr); 
  192. pascal OSErr SCalcSPointer(SpBlockPtr spBlkPtr); 
  193. pascal OSErr SGetDriver(SpBlockPtr spBlkPtr); 
  194. pascal OSErr SPtrToSlot(SpBlockPtr spBlkPtr); 
  195. pascal OSErr SFindSInfoRecPtr(SpBlockPtr spBlkPtr); 
  196. pascal OSErr SFindSRsrcPtr(SpBlockPtr spBlkPtr); 
  197. pascal OSErr SDeleteSRTRec(SpBlockPtr spBlkPtr); 
  198. pascal OSErr OpenSlot(ParmBlkPtr paramBlock,Boolean aSync); 
  199. #ifdef __safe_link
  200. }
  201. #endif
  202.  
  203. #endif
  204.